import logging
import os
from datetime import datetime

class Logger:
    _instance = None
    
    def __new__(cls):
        if cls._instance is None:
            cls._instance = super().__new__(cls)
            cls._instance._initialize_logger()
        return cls._instance
    
    def _initialize_logger(self):
        """初始化日志配置"""
        # 创建logs目录（如果不存在）
        if not os.path.exists('logs'):
            os.makedirs('logs')
            
        # 生成日志文件名（使用当前日期）
        current_date = datetime.now().strftime('%Y-%m-%d')
        log_file = f'logs/mock_server_{current_date}.log'
        
        # 配置根日志记录器
        root_logger = logging.getLogger()
        root_logger.setLevel(logging.INFO)
        
        # 如果已经有处理器，先移除
        for handler in root_logger.handlers[:]:
            root_logger.removeHandler(handler)
        
        # 文件处理器
        file_handler = logging.FileHandler(log_file, encoding='utf-8')
        file_handler.setLevel(logging.INFO)
        
        # 控制台处理器
        console_handler = logging.StreamHandler()
        console_handler.setLevel(logging.INFO)
        
        # 设置日志格式
        formatter = logging.Formatter(
            '[%(asctime)s] %(levelname)s: %(message)s',
            datefmt='%Y-%m-%d %H:%M:%S'
        )
        file_handler.setFormatter(formatter)
        console_handler.setFormatter(formatter)
        
        # 添加处理器到根日志记录器
        root_logger.addHandler(file_handler)
        root_logger.addHandler(console_handler)
        
        # 保存日志记录器实例
        self.logger = root_logger
    
    def info(self, message):
        """记录信息级别的日志"""
        self.logger.info(message)
    
    def error(self, message):
        """记录错误级别的日志"""
        self.logger.error(message)
    
    def warning(self, message):
        """记录警告级别的日志"""
        self.logger.warning(message)
    
    def debug(self, message):
        """记录调试级别的日志"""
        self.logger.debug(message)

# 创建全局日志实例
logger = Logger() 